package cc.zy.base.businesses.service;

import cc.zy.base.businesses.entity.Notice;
import cc.zy.base.businesses.entity.NoticeUser;
import cc.zy.base.common.entity.QueryRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * 通知表 Service接口
 *
 * @author 杨东豪
 * @date 2021-01-26
 */
public interface INoticeService extends IService<Notice> {

    /**
     * 查询（分页）
     *
     * @param request QueryRequest
     * @param notice  notice
     * @return IPage<Notice>
     */
    IPage<Notice> findNotices(QueryRequest request, Notice notice);

    /**
     * 查询（分页）
     *
     * @param notice 通知对象
     * @param request 查询条件
     * @return 分页
     */
    IPage<Notice> findNoticesDetailList(Notice notice, QueryRequest request);

    /**
     * 查询（所有）
     *
     * @param notice notice
     * @return List<Notice>
     */
    List<Notice> findNotices(Notice notice);

    /**
     * 新增
     *
     * @param notice notice
     */
    void createNotice(Notice notice);

    /**
     * 修改
     *
     * @param notice notice
     */
    void updateNotice(Notice notice);

    /**
     * 删除
     *
     * @param notice notice
     */
    void deleteNotice(Notice notice);

    /**
     * 删除通知通过id
     *
     * @param noticeId 通知id
     */
    void deleteNoticeById(Integer noticeId);

    /**
     * 创建人查学生
     *
     * @param noticeId 通知id
     * @return List<Notice>
     */
    List<Notice> findCreatIdByUserId(Integer noticeId);

    /**
     * 查学生id
     *
     * @param noticeId 通知id
     * @return List<Integer>
     */
    List<Integer> findUserIdListByUserId(Integer noticeId);

    /**
     * 查学生id
     *
     * @param noticeId 通知id
     * @return List<Integer>
     */
    List<Integer> findUserIdListByUserIdPool(Integer noticeId);

    /**
     * 查询通过id
     *
     * @param noticeId 通知id
     * @return Notice
     */
    Notice findNoticeById(Integer noticeId);

    /**
     * 插入notice_user的表
     *
     * @param noticeUser 通知人
     */
    void insertNoticeUser(NoticeUser noticeUser);

    /**
     * 修改通知
     *
     * @param notice Notice
     * @return int
     */
    int updateNoticeByidy(Notice notice);

    /**
     * 微信查询消息列表总数
     *
     * @param notice 用户对象，用于传递查询条件
     * @return 通知总数
     */
    long wxNoticeListCount(String userId, String identity, Integer batchId, Integer studyTypeId, String tel);

    /**
     * 微信查询消息列表
     *
     * @param noticeId 通知id
     * @return List<Notice>
     */
    List<Notice> wxNoticeListPage(String userId, String identity, Integer batchId, Integer studyTypeId, String tel, Integer startNumber, Integer endNumber);

    /**
     * 修改通知状态
     *
     * @param userId 通知人对象
     * @param msgId 通知
     * @return int
     */
    int updateNoticeReadStatus(String userId, Integer msgId, String identity, Integer batchId, Integer studyTypeId, String tel, String stuFlag);


    /**
     * 微信查询消息列表
     *
     * @param noticeId 通知id
     * @return List<Notice>
     */
    List<NoticeUser> findShareNoticeIsShow(String noticeId, String stuFlag, String openId);


    /**
     * 修改通知状态
     *
     * @param openId 通知人对象
     * @param msgId 通知
     * @return int
     */
    int updateShareNoticeReadStatus(String openId, Integer msgId, String stuFlag);



}
